package igor.lakienko.ru.generation.quotes.entity;

import igor.lakienko.ru.generation.quotes.enums.Stock;
import igor.lakienko.ru.generation.quotes.enums.TypeSecurities;
import lombok.Builder;
import lombok.Value;

import java.math.BigDecimal;
import java.math.BigInteger;
import java.util.UUID;

@Value
@Builder
public class StockEntity {

    /**
     * Идентификатор акции.
     */
    @Builder.Default
    String id = UUID.randomUUID().toString();

    /**
     * Название акции.
     */
    Stock stock;

    /**
     * Полное название акции.
     */
    String fullStockName;

    /**
     * Цена покупки акции.
     */
    BigDecimal bid;

    /**
     * Цена продажи акции.
     */
    BigDecimal offer;

    /**
     * Суммарная рыночная стоимость выпущенных акций компании.
     */
    BigInteger marketCapital;

    /**
     * Цена за акцию компании.
     */
    float price;

    /**
     * Количество акций компании.
     */
    BigInteger stockVolume;

    /**
     * Прибыль компании за год.
     */
    BigInteger profitCompany;

    /**
     * Справедливая цена акции.
     */
    float fairPrice;

    /**
     * Часть прибыли, которой компания делится с инвесторами, владеющими их акциями
     */
    float dividends;

    /**
     * Тип котировки.
     */
    @Builder.Default
    TypeSecurities type = TypeSecurities.STOCK;

    /**
     * Прибыль компании до вычета процента по кредитам, налога на прибыль и амортизации по основным
     * нематериальным активам.
     */
    float ebitda;
}
